package com.builder;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.ViewScoped;

import com.model.Deposito;
import com.view.ClienteView;
import com.view.DepositoView;

@ManagedBean
@ViewScoped
@SuppressWarnings("serial")
public class DepositoBuilder extends BaseBuilder<DepositoView, Deposito> {

	@ManagedProperty("#{clienteBuilder}")
	private ClienteBuilder clienteBuilder;

	@ManagedProperty("#{seccionProductoBuilder}")
	private SeccionProductoBuilder seccionProductoBuilder;

	@Override
	public Deposito toDomain(DepositoView view) {
		return new Deposito(view.getId(), 
							view.getNombre(),
							view.getTipoDeposito(), 
							view.getCliente() == null ? null : clienteBuilder.toDomain(view.getCliente()),
							view.getFavorito(), 
							seccionProductoBuilder.toDomain(view.getListaSeccionProducto()));
	}

	@Override
	public DepositoView toView(Deposito model) {

		if (model.getCliente() != null) {
			model.getCliente().setListaContactos(null);
		}

		return new DepositoView(model.getID(), 
								model.getNombre(),
								model.getTipoDeposito(),
								model.getCliente() == null ? new ClienteView() : clienteBuilder.toView(model.getCliente()), 
								model.getFavorito(),
								seccionProductoBuilder.toView(model.getListaSeccionProducto()));
	}

	public ClienteBuilder getClienteBuilder() {
		return clienteBuilder;
	}

	public void setClienteBuilder(ClienteBuilder clienteBuilder) {
		this.clienteBuilder = clienteBuilder;
	}

	public SeccionProductoBuilder getSeccionProductoBuilder() {
		return seccionProductoBuilder;
	}

	public void setSeccionProductoBuilder(
			SeccionProductoBuilder seccionProductoBuilder) {
		this.seccionProductoBuilder = seccionProductoBuilder;
	}

}
